<!-- -
如何判断当前月份在某一对象（或数组中），
因为2、4、6、9、11月份都是30天，假设把它们放在一个数组中，那么还要遍历来判断是否相等，
有些麻烦了，所以在这里把这些都当成对象来处理，
把上面的2 4 6 9 11当成对象的key值，而value值是无所谓的，毕竟只是判断是否在里面就OK了。
 -->
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>测试</title>
<style type="text/css">
body {
	font: 12px/1.5 '宋体';
}
</style>
</head>
<body>
	<select id="year">
		<option value="0">--请选择--</option>
	</select>年
	<select id="month">
		<option value="0">--请选择--</option>
	</select>月
	<select id="day">
		<option value="0">--请选择--</option>
	</select>日
	<script type="text/javascript">
		function initSelect(obj, start, end) {
			obj.length = 1;
			for (var i = start; i <= end; i++) {
				try {
					obj.add(new Option(i, i), null);
				} catch (ex) {
					obj.add(new Option(i, i));
				}
			}
		}
		var year = document.getElementById("year");
		var month = document.getElementById("month");
		var day = document.getElementById("day");
		initSelect(year, 1970, 2012);
		year.onchange = function() {
			if (this.value != 0) {
				initSelect(month, 1, 12);
			} else {
				month.length = 1;
				day.length = 1;
			}
		}
		month.onchange = function() {
			if (this.value != 0) {
				var m30 = {
					2 : 1,
					4 : 1,
					6 : 1,
					9 : 1,
					11 : 1
				};
				if (this.value == 2) {
					if (isLeapYear(year.value)) {
						initSelect(day, 1, 29);
					} else {
						initSelect(day, 1, 28);
					}
				} else if (this.value in m30) {
					initSelect(day, 1, 30);
				} else {
					initSelect(day, 1, 31);
				}
			} else {
				day.length = 1;
			}
		}
		//判断闰年的条件：能被4整除且不能被100整除 或 能被100整除且能被400整除
		function isLeapYear(y) {
			return (y % 4 == 0 && y % 100 != 0)
					|| (y % 100 == 0 && y % 400 == 0);
		}
	</script>
</body>
</html>